#ifndef BUNNY_STATE_H
#define BUNNY_STATE_H

#include "FSM/State.h"
#include <iostream>
using namespace std;

class Bunny;

class State_BunnyRun: public State<Bunny> {
public:
	State_BunnyRun() {}

	virtual void enter(Bunny* p_bunny) {
		cout << "enter: Run" << endl;
	}

	virtual void execute(Bunny* p_bunny); 

	virtual void exit(Bunny* p_bunny) {
		cout << "exit: Run" << endl;
	}

	virtual bool onMessage(Bunny* p_bunny, const Telegram& p_t);
};



class State_BunnyRest: public State<Bunny> {
public:
	State_BunnyRest() {}


	virtual void enter(Bunny* p_bunny);

	virtual void execute(Bunny* p_bunny);

	virtual void exit(Bunny* p_bunny) {
		cout << "exit: Rest" << endl;
	}

	virtual bool onMessage(Bunny* p_bunny, const Telegram& p_t);
};

#endif